পয়েন্টার টু অবজেক্ট এবং this পয়েন্টার

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming) অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) |
233
233

পয়েন্টার টু অবজেক্ট (Pointer to Object) এবং this পয়েন্টার (this Pointer) C++ প্রোগ্রামিংয়ের দুটি গুরুত্বপূর্ণ পয়েন্টার ধারণা, যা অবজেক্টের সাথে সরাসরি কাজ করার সুবিধা দেয়। নিচে এই দুটি বিষয়ে বিস্তারিত আলোচনা করা হলো।


পয়েন্টার টু অবজেক্ট (Pointer to Object)

পয়েন্টার টু অবজেক্ট হলো এমন একটি পয়েন্টার, যা কোনো নির্দিষ্ট ক্লাসের অবজেক্টের ঠিকানা ধারণ করে। সাধারণ পয়েন্টার যেমন কোনো ভ্যারিয়েবলের ঠিকানা ধারণ করতে পারে, তেমনিভাবে পয়েন্টার টু অবজেক্ট কোনো অবজেক্টের ঠিকানা ধরে রাখতে পারে এবং সেই অবজেক্টের ডেটা মেম্বার ও মেম্বার ফাংশন অ্যাক্সেস করতে পারে।

উদাহরণ: পয়েন্টার টু অবজেক্ট

#include <iostream>
using namespace std;

class Car {
public:
    string brand;
    int year;

    void displayInfo() {
        cout << "Brand: " << brand << ", Year: " << year << endl;
    }
};

int main() {
    Car car1;          // Car ক্লাসের একটি অবজেক্ট তৈরি
    car1.brand = "Toyota";
    car1.year = 2020;

    Car *ptr = &car1;  // car1 অবজেক্টের ঠিকানা ধরে রাখা হলো

    // পয়েন্টার ব্যবহার করে অবজেক্টের মেম্বার অ্যাক্সেস
    ptr->displayInfo(); // Output: Brand: Toyota, Year: 2020

    return 0;
}

বর্ণনা:

  • এখানে car1 নামে একটি অবজেক্ট তৈরি করা হয়েছে এবং Car *ptr এর মাধ্যমে car1 এর ঠিকানা পয়েন্টারে ধরে রাখা হয়েছে।
  • ptr->displayInfo() দিয়ে পয়েন্টার ব্যবহার করে অবজেক্টের মেম্বার ফাংশন displayInfo() অ্যাক্সেস করা হয়েছে।
  • পয়েন্টার টু অবজেক্ট ব্যবহার করে অবজেক্টের ডেটা মেম্বার বা মেম্বার ফাংশনে অ্যাক্সেস করতে -> (arrow) অপারেটর ব্যবহার করা হয়।

পয়েন্টার টু অবজেক্টের সুবিধা

১. অবজেক্টের মেমোরি অ্যাড্রেস অ্যাক্সেস: এটি সরাসরি অবজেক্টের ঠিকানা নিয়ে কাজ করতে পারে, যা মেমোরি ব্যবস্থাপনায় সহায়ক। ২. ডাইনামিক অবজেক্ট তৈরি: পয়েন্টার ব্যবহার করে ডাইনামিক্যালি অবজেক্ট তৈরি এবং পরিচালনা করা যায়। ৩. কয়েকটি অবজেক্ট একসাথে পরিচালনা: একই ক্লাসের একাধিক অবজেক্ট তৈরি করলে, তাদের পয়েন্টার ব্যবহার করে সহজেই পরিচালনা করা যায়।


this পয়েন্টার (this Pointer)

this পয়েন্টার হলো C++ এর একটি বিশেষ পয়েন্টার, যা প্রতিটি অবজেক্টের জন্য ক্লাসের ভিতরে স্বয়ংক্রিয়ভাবে তৈরি হয়। এটি বর্তমানে যে অবজেক্টে কাজ চলছে, তার ঠিকানা নির্দেশ করে। মেম্বার ফাংশনের ভিতরে this পয়েন্টার ব্যবহার করা হয়।

this পয়েন্টারের ব্যবহার

১. মেম্বার ভ্যারিয়েবল এবং প্যারামিটার ভ্যারিয়েবল পৃথক করা: যদি মেম্বার ভ্যারিয়েবল এবং ফাংশনের প্যারামিটার একই নামে হয়, তখন this পয়েন্টার ব্যবহার করে মেম্বার ভ্যারিয়েবলকে শনাক্ত করা যায়। ২. চেইনিং: ফাংশনের মধ্যে this পয়েন্টার ব্যবহার করে ফাংশন চেইনিং করা যায়।

উদাহরণ: this পয়েন্টার ব্যবহার করে মেম্বার অ্যাক্সেস

#include <iostream>
using namespace std;

class Car {
private:
    string brand;
    int year;

public:
    // কনস্ট্রাক্টর
    Car(string brand, int year) {
        this->brand = brand; // this পয়েন্টার ব্যবহার করে মেম্বার অ্যাক্সেস
        this->year = year;
    }

    // মেম্বার ফাংশন
    void displayInfo() {
        cout << "Brand: " << this->brand << ", Year: " << this->year << endl;
    }
};

int main() {
    Car car1("Toyota", 2020);
    car1.displayInfo(); // Output: Brand: Toyota, Year: 2020

    return 0;
}

বর্ণনা:

  • এখানে Car ক্লাসের কনস্ট্রাক্টরের মধ্যে brand এবং year নামে দুটি মেম্বার ভ্যারিয়েবল এবং দুটি প্যারামিটার একই নামে রয়েছে।
  • this->brand এবং this->year ব্যবহার করে মেম্বার ভ্যারিয়েবলকে প্যারামিটার থেকে আলাদা করা হয়েছে।
  • this পয়েন্টার প্রতিটি অবজেক্টের জন্য আলাদা হয় এবং বর্তমান অবজেক্টের ঠিকানা নির্দেশ করে।

পয়েন্টার টু অবজেক্ট এবং this পয়েন্টারের পার্থক্য

বৈশিষ্ট্যপয়েন্টার টু অবজেক্টthis পয়েন্টার
উদ্দেশ্যনির্দিষ্ট অবজেক্টের ঠিকানা ধরে রাখেবর্তমান অবজেক্টের ঠিকানা নির্দেশ করে
ব্যবহারের স্থানক্লাসের বাইরে থেকে অবজেক্ট অ্যাক্সেসে ব্যবহৃত হয়শুধুমাত্র ক্লাসের ভিতরে ব্যবহৃত হয়
কাস্টম পয়েন্টারহ্যাঁ, অবজেক্টের ঠিকানা ধরে রাখতে আলাদা পয়েন্টার তৈরি করা যায়না, C++ নিজেই this পয়েন্টার তৈরি করে
অ্যাক্সেস স্টাইল-> অপারেটরের মাধ্যমে মেম্বার অ্যাক্সেসthis-> ব্যবহার করে মেম্বার অ্যাক্সেস

ডাইনামিক অবজেক্ট তৈরি এবং পয়েন্টার টু অবজেক্ট

C++ এ new অপারেটর ব্যবহার করে ডাইনামিক্যালি অবজেক্ট তৈরি করা যায় এবং পয়েন্টারের মাধ্যমে তা অ্যাক্সেস করা যায়।

#include <iostream>
using namespace std;

class Car {
public:
    string brand;
    int year;

    Car(string b, int y) {
        brand = b;
        year = y;
    }

    void displayInfo() {
        cout << "Brand: " << brand << ", Year: " << year << endl;
    }
};

int main() {
    // ডাইনামিক্যালি অবজেক্ট তৈরি
    Car *ptr = new Car("Honda", 2021);

    // পয়েন্টার দিয়ে মেম্বার ফাংশন কল
    ptr->displayInfo(); // Output: Brand: Honda, Year: 2021

    delete ptr; // ডাইনামিক মেমোরি মুক্ত করা
    return 0;
}

বর্ণনা:

  • new Car("Honda", 2021); ব্যবহার করে ডাইনামিক্যালি Car অবজেক্ট তৈরি করা হয়েছে এবং এটি ptr পয়েন্টারে সংরক্ষণ করা হয়েছে।
  • delete ptr; স্টেটমেন্ট ব্যবহার করে মেমোরি মুক্ত করা হয়েছে।

সারসংক্ষেপ

  • পয়েন্টার টু অবজেক্ট: একটি পয়েন্টার, যা নির্দিষ্ট অবজেক্টের ঠিকানা ধরে রাখে এবং -> অপারেটর ব্যবহার করে সেই অবজেক্টের মেম্বার অ্যাক্সেস করা যায়।
  • this পয়েন্টার: C++ এর একটি বিশেষ পয়েন্টার, যা বর্তমান অবজেক্টের ঠিকানা নির্দেশ করে এবং সাধারণত মেম্বার ভ্যারিয়েবল এবং প্যারামিটার আলাদা করতে বা চেইনিংয়ের জন্য ব্যবহৃত হয়।

পয়েন্টার টু অবজেক্ট এবং this পয়েন্টার ব্যবহারে মেমোরি ব্যবস্থাপনা ও অবজেক্ট ম্যানিপুলেশন সহজ হয়, যা প্রোগ্রামিংয়ে আরও কার্যকর ও শক্তিশালী নিয়ন্ত্রণ প্রদান করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion